File sharing has been a focus of intense research and grass roots usage for some time. File sharing is enabled by file sharing approaches specifically designed for that purpose and implemented as different file sharing systems having file sharing protocols associated therewith. A number of different file sharing systems have been implemented, beginning with Napster and then proceeding through a number of generations of different file sharing systems, such as gnutella, Kazaa, eDonkey, Winny, and BitTorrent. In addition to these file sharing systems, new systems, such as Share and Perfect Dark, also are being developed. Collectively, these file sharing systems and associated protocols are referred to as peer-to-peer (P2P) file-sharing systems/protocols or, more simply, P2P file sharing applications. Furthermore, in addition to P2P file sharing applications, a new class of P2P applications, P2P television (P2PTV), is emerging which, architecturally, are different than the P2P file-sharing applications.
The popularity of P2P file sharing is evident from recent traffic studies. For example, a recent traffic study, by Ellacoya Networks, of one million broadband users within the United States, indicates that the breakdown of the major traffic types by volume is as follows: web (HTTP)—46%; peer-to-peer (P2P)—37%; newsgroup—9%; non-HTTP streaming video—3%; gaming—2%; voice-over-IP (VoIP)—1%; and other—1%. The main reason for the high volume of HTTP traffic is embedded video streaming traffic, such as traffic from YouTube, which accounts for 9.8% of the total traffic in above-mentioned study). However, P2P file sharing still is responsible for a large percentage of the traffic and, with the emergence of P2PTV, the amount of traffic is expected to increase drastically.
A vast majority of the existing P2P applications involve file sharing; however, a majority of the existing P2P applications involving file sharing, at least initially, were not entirely peer-to-peer. Rather, most existing P2P applications initially utilized a central server to coordinate activity between members of the P2P network. For example, in bitTorrent, while downloading of different pieces of information was peer-to-peer, a centralized server, referred to as the tracker in bitTorrent, was used to coordinate the activity of the bitTorrent application. Similarly, for example, many other P2P applications involving file sharing also had similar characteristics, such as Napster and eDonkey. The use of a central server, however, makes existing P2P applications vulnerable to congestion and failures and, further, makes existing P2P applications an attractive target to security threats.
Disadvantageously, however, while existing P2P applications support file sharing, existing P2P applications do not support the ability to search for a service.